Increasing numbers of workers are mobile, meaning that they do their jobs outside of the conventional office. Laptop and palm-sized computers provide some communication and computing ability “on the road” and, with the decreasing size of data storage devices of all types, mobile workers can carry a lot of data with them. It is more difficult, however, to share data with others or access a centralized database. Specifically, mobile users (or developers of wireless data systems) face several challenges, such as:
Disconnected operation. Workers often lose connectivity in certain areas such as, subways, buildings, etc. but they should be able to continue doing their job and, at a minimum, not have their data corrupted (either locally or centrally) as a result of the disconnection.
Limited screen size and user input. It is difficult to display large amounts of information, and enable a user to meaningfully “browse” the information on a tiny screen. User input is limited as well, especially with respect to PDAs and cellular phones.
Latency. Another challenge facing developers is how to design applications that make best use of a range of bandwidths.
Manageability. Applications should be able to grow, adding features and functions, without rebuilding them from scratch and without losing backward compatibility with other programs or services.
The value of separation of data and format has become widely known, one example being the use of stylesheets as described in U.S. Pat. No. 5,860,073. Stylesheets alone, however, do not adequately address the mobile user problems outlined above. For example, a stylesheet or transformer can be written to translate data to HTML or WML for display on a small screen. But if the result is long, downloading may take awhile, and even if communication bandwidth is good, disconnection is a risk, and even after downloading, limited local processing power may result in long delay before the entire document can be randomly accessed by the user. Stylesheets enable some dynamic properties, but when applied in the context of a Web browser page viewing they do not provide a complete solution for disconnected operation.
XML (eXtensible Markup Language) is a known document processing standard (a simplified form of SGML). It allows a developer to create a custom vocabulary or “schema” defining a custom markup language. This can be done using a document type definition (DTD) or with the XML Schema Definition (XSD), among other schema languages. The schema specifies what elements or tags and attributes can be used in a document and how they relate to each other. Many industry-specific DTDs are evolving, for example MathML, PGML, etc. XML parsers are publicly available for checking “well-formedness” of a document (compliance with the XML syntax specifications) as well as “validity” meaning compliance with the applicable schema.
The Information and Context Exchange (ICE) protocol is designed to manage establishing “syndication” relationships and data transfer for content distribution. ICE is an application of XML. ICE enables establishing and managing syndicator-subscriber relationships for transferring content that is generally originated by the syndicator and consumed by the subscriber, such as news or weather reports. This system essentially supports one-way distribution of content, i.e., publication, rather than interactive, mobile applications implementing and synchronizing distributed databases. Still, it does suggest a data replication scheme mediated by XML messages.
It has also been suggested to use text-based descriptive attribute grammar, like XML, to specify object-oriented applications. U.S. Pat. No. 6,083,276 to Davidson et al. describes such a method. It is limited, however, to essentially translating the application description (in an XML-like language) to a set of software objects such as Java® component classes. Each element declaration in the source (markup language) file must be capable of being mapped to a corresponding application component class. Each element with children must result in a corresponding container component with analogous child components. Every attribute declaration must map to a corresponding property value in the corresponding component, and so on. Thus the application must be designed from the outset to align very closely with a selected object-oriented language and framework. Desired extensibility, reuse and similar goals are sacrificed, although the concept of initially describing an application using an XML-like syntax is interesting and has some obvious benefits. The '276 patent to Davidson, however, primarily teaches an automated method for translating that description into a specific object-oriented program at which point the benefits of the descriptive attribute grammar are lost.
U.S. Pat. No. 6,012,098 teaches a system for isolating the retrieval of data from the rendering of that data. A data retrieval “servlet” executes a query, and converts the results to an XML data stream, delivered to a downstream rendering servlet. The rendering servlet parses this XML data stream, using a stylesheet that may be written using XSL, and creates an HTML data stream as output for communication to a client computer.
XSLT, or Extensible Stylesheet Language—Transformation, is a useful tool for working with XML documents. XSLT enables one to extract and transform the source information in various ways, for example into another markup language like HTML as is commonly done. See FIG. 1.
Many software systems exist which implement or utilize the XML family of standards (XML, XSL, XPath, XML Schema Definitions, etc.). HTML and XML browsers are common. Many enable offline operation by accessing cached read-only data. HTML and XML editors are common as well, all of which form part of the general background of the invention.
See also U.S. Pat. No. 6,167,409 to DeRose et al. “Computer System and Method for Customizing Context Information Sent with Document Fragments Across a Computer Network.”
Glossary of Prior Art Terms and Acronyms
Application server—One of a class of commercially available software frameworks for integrating computation into a web server environment.
Load-balancing router—A router that takes into account the effective performance of a set of computational resources when deciding where to route a message.
N-tier architecture—A software architecture in which computing resources can be layered to any depth. In contrast to “3-tier architecture.”
Namespace name (Namespaces)—A URI uniquely identifying a namespace. See Namespaces in XML [Namespaces].
Public identifier (SGML)—Globally unique string to identify a resource. Could be accompanied by a system identifier, which was often a filesystem path on a private filesystem.
Public identifier (XML)—Unique identity string. See XML 1.0 [XML].
Self identity—Identity as self-assigned by an object, without the direct assistance of an issuing authority. The UUID is a standard created to support the implementation of self identity. Self identity is needed in situations where it is not necessarily possible or appropriate to request an identity from an authority.
Session—An object representing a cached state to optimize an end user's interaction with the system.
Synchronization point—The event during which a database incorporates information from another database, thus instigating replication or updating previously replicated information.
Unique identifier—Any identifier that defines a set of rules, that, if followed, guarantee uniqueness.
XML Extensible Markup Language—A simplified form of SGML, the Standard Generalized Markup Language, in international documentation standard. XML is a document processing standard recommended by the World Wide Web Consortium (W3C).
XSL Extensible Stylesheet Language—A part of the broader XML specification. An XSL document or stylesheet transforms an XML input document to an output document, essentially applying element formatting rules.
XSLT Extensible Stylesheet Language—Transformation—The transform portion of the broader XSL language specification.
XPATH—A syntax for describing a node set location in an XML document using expressions that consider the context in which they appear.
URI—Uniform Resource Identifier. See RFC2396 [URI].
UUID—Universally Unique Identifier. A 128-bit unique identifier that can be allocated without reference to a central authority. From Universal Unique Identifier [DCE].